package org.dromara.system.domain.bo;

import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.system.domain.SysBillRule;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import jakarta.validation.constraints.*;

/**
 * 单据规则业务对象 sys_bill_rule
 *
 * @author yilong.fu
 * @date 2024-11-06
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SysBillRule.class, reverseConvertGenerate = false)
public class SysBillRuleBo extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

            /**
             * 自然主键
             */
                @NotNull(message = "自然主键不能为空", groups = { EditGroup.class })
        private Long id;

            /**
             * 单据名称
             */
                @NotBlank(message = "单据名称不能为空", groups = { AddGroup.class, EditGroup.class })
        private String name;

            /**
             * 分类
             */
                @NotBlank(message = "分类不能为空", groups = { AddGroup.class, EditGroup.class })
        private String category;

            /**
             * 单据编号
             */
                @NotBlank(message = "单据编号不能为空", groups = { AddGroup.class, EditGroup.class })
        private String enCode;

            /**
             * 单据前缀
             */
                @NotBlank(message = "单据前缀不能为空", groups = { AddGroup.class, EditGroup.class })
        private String prefix;

            /**
             * 日期格式
             */
                @NotBlank(message = "日期格式不能为空", groups = { AddGroup.class, EditGroup.class })
        private String dateFormat;

            /**
             * 流水位数
             */
                @NotNull(message = "流水位数不能为空", groups = { AddGroup.class, EditGroup.class })
        private Long digit;

            /**
             * 流水起始
             */
                @NotBlank(message = "流水起始不能为空", groups = { AddGroup.class, EditGroup.class })
        private String startNumber;

            /**
             * 流水范例
             */
                @NotBlank(message = "流水范例不能为空", groups = { AddGroup.class, EditGroup.class })
        private String example;

            /**
             * 当前流水号
             */
                @NotNull(message = "当前流水号不能为空", groups = { AddGroup.class, EditGroup.class })
        private Long thisNumber;

            /**
             * 输出流水号
             */
                @NotBlank(message = "输出流水号不能为空", groups = { AddGroup.class, EditGroup.class })
        private String outputNumber;

            /**
             * 描述说明
             */
                @NotBlank(message = "描述说明不能为空", groups = { AddGroup.class, EditGroup.class })
        private String description;

            /**
             * 排序
             */
                @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
        private Integer seq;


}
